/**
 * @(#)IUserSession.java Dec 13, 2009
 *   
 * Copyright  (c) 2009-2010 Wilmar IT Service,  Inc.   
 * All  rights  reserved.   
 * TODO
 */

package com.wilmar.process.web.spi;

import java.util.Locale;
import java.util.Map;

import javax.servlet.http.HttpSession;

import com.wilmar.process.entity.User;
import com.wilmar.process.exception.NoUserSessionException;

/**
 * 在Action中获取当前用户所使用的接口
 * 
 * @author makubex Email:makubexnet@gmail.com
 * @version 1.0.0
 */
public interface IUserSessionService {
	/**
	 * 获取用户对象,与getCurrentUserObject(Map<String, Object> session)相同,只要实现其一
	 * 
	 * @return 用户对象
	 * @throws NoUserSessionException
	 *             如果无法获取用户信息
	 */
	public User getCurrentUserObject() throws NoUserSessionException;

	/**
	 * 从Struts2的session中获取用户对象
	 * 
	 * @param session
	 *            Struts2的session对象
	 * @return 用户对象
	 * @throws NoUserSessionException
	 *             如果无法获取用户信息
	 */
	public User getCurrentUserObject(Map<String, Object> session)
			throws NoUserSessionException;
	
	/**
	 * 从http的session中获取用户对象
	 * 
	 * @param session
	 *            http session对象
	 * @return 用户对象
	 * @throws NoUserSessionException
	 *             如果无法获取用户信息
	 */
	public User getCurrentUserObject(HttpSession session)
			throws NoUserSessionException;

	/**
	 * 获取用户当前的语言设置,与getUserLocale(Map<String, Object> session)相同,只要实现其一
	 * 
	 * @return 用户当前的语言设置
	 */
	public Locale getUserLocale() throws NoUserSessionException;
	
	/**
	 * 获取用户当前的语言设置
	 * 
	 * @param session
	 *            struts2的 session对象
	 * @return 用户当前的语言设置
	 */
	public Locale getUserLocale(Map<String, Object> session) throws NoUserSessionException;

	/**
	 * 获取用户当前的语言设置
	 * 
	 * @param session
	 *            http session对象
	 * @return 用户当前的语言设置
	 */
	public Locale getUserLocale(HttpSession session) throws NoUserSessionException;
}
